import router from './router'
import store from './store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import getPageTitle from './utils/get-page-title'
NProgress.configure({ showSpinner: false })

// 白名单: 不需要登录就可以直接访问的页面集合
const whiteList = ['/login', '/404', '/abc']

router.beforeEach((to, from, next) => {
  // console.log('beforeEach -2')
  document.title = getPageTitle(to.meta.title)
  next()
})

router.beforeEach(async(to, from, next) => {
  // console.log('路由跳转一定要经过这里', to, store)
  NProgress.start() // 启动进度条
  // 1. 如果有token&&去登录页             ===> 让它去主页
  // 2. 如果没有token && 去的不是登录页    ===> 去登录页
  const token = store.state.user.token
  if (token && to.path === '/login') {
    console.log('有了token,login就不能访问')
    next('/')
    NProgress.done()
  } else if (!token && whiteList.includes(to.path) === false) {
    console.log('没有登录&& 访问的页面不是: /login /404 /abc 中的一个')
    next('/login')
    NProgress.done()
  } else {
    // 调用action,获取用户个人信息,保存到vuex
    if (!store.state.user.userInfo.userId && token) {
      await store.dispatch('user/getUserInfo')
    }

    next()
  }
})

router.afterEach((to, from) => {
  NProgress.done()
})
